﻿
/*********************************************************************************
--时间：2011-12-30 23:31:07
--作者：jjpeng
--邮箱：ling121211@gmail.com
--说明：日志帮助类
--
*********************************************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Reflection;

/*********************************************************************************
--时间：2012-04-17 09:49:26
--作者：jjpeng
--邮箱：ling121211@gmail.com
--说明：根据《NET设计规范》中提到，对于重载成员，参数少的成员调用参数比它参数稍多的成员，逐层调用，最多的成员声明为 virtual
--
*********************************************************************************/

namespace PCC.Framework
{
    /// <summary>
    /// 备注：处理应用程序中的日志
    /// 时间：2012-01-01 22:34:01
    /// </summary>
    public class LogHelper
    {
        private static readonly log4net.ILog Log = null;

        /// <summary>
        /// 类型构造器
        /// </summary>
        static LogHelper()
        {
            Log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        }

        private LogHelper()
        { 
            
        }

        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="msg">日志信息</param>
        /// <param name="level">日志级别</param>
        /// <param name="ex">异常信息</param>
        public static void WriteLog(string msg, LogLevel level, Exception ex)
        {
            switch (level)
            { 
                case LogLevel.Info:
                    Log.Info(msg, ex);
                    break;
                case LogLevel.Warning:
                    Log.Warn(msg, ex);
                    break;
                case LogLevel.Error:
                case LogLevel.Fatal:
                    Log.Error(msg, ex);
                    break;
                case LogLevel.Debug:
                default:
                    Log.Debug(msg, ex);
                    break;
            }
        }

        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="msg">日志信息</param>
        /// <param name="level">日志级别</param>
        public static void WriteLog(string msg, LogLevel level)
        {
            WriteLog(msg, level, null);
        }

        /// <summary>
        /// 记录调试信息
        /// </summary>
        /// <param name="msg">日志信息</param>
        public static void WriteLog(string msg)
        {
            WriteLog(msg, LogLevel.Debug);
        }
    }
}